// Webpack 配置扩展，用于处理小程序兼容性问题

module.exports = {
  // 解决模块解析问题
  resolve: {
    fallback: {
      // 为小程序环境提供 polyfill
      "canvas": false,
      "fs": false,
      "path": false,
      "crypto": false
    }
  },
  
  // 模块规则
  module: {
    rules: [
      {
        // 处理可能包含 Lottie 的第三方库
        test: /node_modules.*lottie.*\.js$/,
        use: {
          loader: 'babel-loader',
          options: {
            presets: ['@babel/preset-env'],
            plugins: [
              // 转换动态 import
              '@babel/plugin-syntax-dynamic-import',
              // 处理类属性
              '@babel/plugin-proposal-class-properties'
            ]
          }
        }
      }
    ]
  },
  
  // 插件配置
  plugins: [
    // 定义全局变量，用于兼容性检测
    new (require('webpack')).DefinePlugin({
      'process.env.TARO_ENV': JSON.stringify(process.env.TARO_ENV || 'h5'),
      '__MINI_PROGRAM__': JSON.stringify(['weapp', 'alipay', 'swan', 'tt'].includes(process.env.TARO_ENV))
    })
  ],
  
  // 外部依赖处理
  externals: {
    // 在小程序环境中排除可能有问题的依赖
    'lottie-web': 'commonjs2 lottie-web',
    'bodymovin': 'commonjs2 bodymovin'
  }
}